﻿using System;
using System.Data;
using System.Data.SqlClient;
using consultasSql;
using consultasSql.consultasVarias;
using ot;
using validarDatos;

public partial class Stdby_OrdenTrabajo_transporte : System.Web.UI.Page
{
    private void mostrarMensaje(string mensaje)
    {
        System.Text.StringBuilder sbMensaje = new System.Text.StringBuilder();

        sbMensaje.Append("<script type='text/javascript'>");
        sbMensaje.AppendFormat("alert('{0}');", mensaje);
        sbMensaje.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "Mensaje", sbMensaje.ToString());
    }


    /*---------------------------------------------------------*/

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("../tabOrdenTrabajo/transporte.aspx", false);
    }




    /*---------------------------------------------------------*/



    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {

            if (Session["idOt"] != null)
            {


                /*--------------*/
                //recargo la pagina para poder mostrar los botones que se activaron luego de guardar los datos, de acuerdo a los permisos
                string exito = Request.QueryString["exito"];

                if (!String.IsNullOrEmpty(exito))
                {
                    if (exito.Equals("0"))
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionExitosa());
                    }
                }
                /*--------------*/




                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    cargarCampos(Convert.ToInt32(Session["idOt"].ToString().Trim()));
                }
                else
                {
                    Response.Redirect("~/Stdby/OrdenTrabajo/tabOrdenTrabajo/ingresoOrdenTrabajo.aspx", false);
                }
            }
            else
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }
        }




        if (Request.Params["__EVENTTARGET"] == "txtTransporte")
        {
            if (!String.IsNullOrEmpty(txtTransporte.Text.Trim()))
            {
                if (existeRegistro())
                {
                    lblTransporte.Visible = false;
                    cargarRegistros();
                }
                else
                {
                    txtTransporte.ToolTip = "No existe el transporte indicado.";
                    lblTransporte.Visible = true;
                    txtTipoServicio.Text = "";
                    txtCosto.Text = "";
                    txtEmail.Text = "";
                }
            }
            else
            {
                limpiarCampos();
            }
        }
    }

    //cargo los campos desde la tabla otcab
    private void cargarCampos(int Id)
    {
        try
        {
            string consulta = "SELECT Transporte.NombTrans, OtCab.TipoServicio, OtCab.CostoTrans, OtCab.Email, OtCab.ObsTrans FROM OtCab INNER JOIN Transporte ON OtCab.IdTransporte = Transporte.Id  WHERE OtCab.Id = @Id";

            SqlCommand command = new SqlCommand();


            command.CommandType = CommandType.Text;
            command.CommandText = consulta;

            command.Parameters.Clear();

            command.Parameters.AddWithValue("@Id", Id);


            DataTable tabla = new CDarDataSet().darDataTable(command);

            txtTransporte.Text = tabla.Rows[0][0].ToString();
            txtTipoServicio.Text = tabla.Rows[0][1].ToString();
            txtCosto.Text = tabla.Rows[0][2].ToString();
            txtEmail.Text = tabla.Rows[0][3].ToString();
            txtObservaciones.Text = tabla.Rows[0][4].ToString();

        }
        catch { }

        selectTipoServicio();
    }


    //cargo textbox desde transporte
    public void cargarRegistros()
    {
        try
        {
            string consulta = "SELECT TipoServ, Costo, Email FROM Transporte WHERE NombTrans = @NombTrans";

            SqlCommand command = new SqlCommand();

            command.CommandType = CommandType.Text;
            command.CommandText = consulta;

            command.Parameters.Clear();

            command.Parameters.AddWithValue("@NombTrans", txtTransporte.Text);

            DataTable tabla = new CDarDataSet().darDataTable(command);

            txtTipoServicio.Text = tabla.Rows[0][0].ToString();
            txtCosto.Text = tabla.Rows[0][1].ToString();
            txtEmail.Text = tabla.Rows[0][2].ToString();

        }
        catch { }

        selectTipoServicio();
    }

    //habilitar txtCosto
    private void selectTipoServicio()
    {
        try
        {
            if (txtTipoServicio.Text.Equals("No Local"))
            {
                txtCosto.ReadOnly = false;
            }
            else
            {
                txtCosto.ReadOnly = true;
            }
        }
        catch { }
    }


    private void limpiarCampos()
    {
        try
        {
            lblTransporte.Visible = false;
            lblCosto.Visible = false;

            txtTransporte.ToolTip = null;
            txtCosto.ToolTip = null;

            txtTransporte.Text = "";
            txtTipoServicio.Text = "";
            txtCosto.Text = "";
            txtEmail.Text = "";

        }
        catch { }
    }


     //guardar
    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        if (existeRegistro())//consulto si ya esta usado el registro
        {
            if (comprobarCampos())
            {
                updateInsert();
            }
        }

    }


    //comprueba si existe el registro
    private bool existeRegistro()
    {
        if (!new CExisteRegistro().existeRegistro("Transporte", "NombTrans", txtTransporte.Text.Trim()))
        {
            txtTransporte.ToolTip = "No existe el registro.";
            lblTransporte.Visible = true;
            return false;
        }
        return true;
    }


    //comprobar campos
    private bool comprobarCampos()
    {
        lblTransporte.Visible = false;
        lblCosto.Visible = false;

        txtTransporte.ToolTip = null;
        txtCosto.ToolTip = null;

        bool bandera = true;

        try
        {
            if (!CValidaDatos.validaPalabras(txtTransporte.Text.Trim()) || String.IsNullOrEmpty(txtTransporte.Text.Trim()))
            {
                txtTransporte.ToolTip = CMensajes.mensajeValidaPalabra();
                lblTransporte.Visible = true;
                bandera = false;
            }

            if (!CValidaDatos.validaDecimal(txtCosto.Text.Trim()) || String.IsNullOrEmpty(txtCosto.Text.Trim()))
            {
                txtCosto.ToolTip = CMensajes.mensajeValidaNumero();
                lblCosto.Visible = true;
                bandera = false;
            }

        }
        catch
        {
            bandera = false;
        }

        return bandera;
    }


    //update o insertObjeto_Accesorios
    private void updateInsert()
    {
        try
        {

            CTransporte objeto = new CTransporte
            {
                TipoServicio = txtTipoServicio.Text.Trim(),
                CostoTrans = txtCosto.Text.Trim(),
                Email = txtEmail.Text.Trim(),
                ObsTrans = txtObservaciones.Text.Trim(),

            };

            if(!String.IsNullOrEmpty(txtTransporte.Text.Trim()))
            {
                objeto.IdTransporte = new CObtenerId().obtenerId("Transporte", "NombTrans", txtTransporte.Text.Trim());
            }
            else
            {
                objeto.IdTransporte = null;
            }

            if (!String.IsNullOrEmpty(txtCosto.Text.Trim()))
            {
                objeto.CostoTrans = txtCosto.Text.Trim();
            }
            else
            {
                objeto.CostoTrans = null;
            }

            CConsultaOtTransporte consulta = new CConsultaOtTransporte();


            if (Session["idOt"] != null)
            {
                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    objeto.Id = Convert.ToInt32(Session["idOt"].ToString().Trim());

                    if (consulta.update(objeto))
                    {
                        //si fue exitosa envio 0, para luego mostrar el mensaje
                        Response.Redirect("../tabOrdenTrabajo/transporte.aspx?exito=0", false);
                    }
                    else
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionExitosa());
                    }
                }
                else //si es null, redirigimos, debido a que algo sucedio
                {
                    Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
                }
            }
            else //si es null, redirigimos, debido a que algo sucedio
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }

        }
        catch
        {
            mostrarMensaje(CMensajes.mensajeOperacionFallida());
        }
    }
}
    